package com.wjm.demo.test0.lambda_test;

import java.util.ArrayList;
import java.util.List;

public class TestMain5 {
    public static void main(String[] args) {
        // JDK1.8 Stream API
        //需求：找出以下集合中存储的年龄大于19的并输出
        List<String> list=new ArrayList<>();
        list.add("张三,12");
        list.add("李四,19");
        list.add("王五,20");
        //Stream API一句搞定，我震惊了
        list.stream().map(s -> s.split(",")[1] ).map(Integer::parseInt).filter( n -> n>19 ).forEach(System.out::println);
        //输出如下:
        //20

        //并发流
        //多个人同时处理，具体几个jdk自已处理不用管
        //如打印集合中的100个元素，如果只求最快打印，不关心顺序，可以使用并发流
        //
        List<String>data=new ArrayList<>();
        for(int i=0;i<100;i++){
            data.add(i+"");
        }
        //先看非并发的打印方式
        data.stream().forEach(System.out::println);//这是一个人在打印，是顺序打印，
        System.out.println("+++++++++++++++++++我是分隔线+++++++++++++++++++++++");
        //并发1
        data.parallelStream().forEach(System.out::println);//这是多个人在打印，是并发多个人同时在抢时打印，几个人是JDK处理不用管
        //如果已经获取了普通流，也可以再去获取并发流
        System.out.println("+++++++++++++++++++我是分隔线2222222222+++++++++++++++++++++++");
        //并发2
        data.stream().parallel().forEach(System.out::println);//这是多个人在打印，是并发多个人同时在抢时打印，几个人是JDK处理不用管
    }
}
